package com.shuhua.common.result;

import lombok.Getter;

/**
 * 响应状态码枚举
 */
@Getter
public enum ResultCode {
    
    // 成功状态码
    SUCCESS(200, "操作成功"),
    
    // 客户端错误状态码 4xx
    BAD_REQUEST(400, "请求参数错误"),
    UNAUTHORIZED(401, "未授权，请先登录"),
    FORBIDDEN(403, "无权限访问该资源"),
    NOT_FOUND(404, "请求的资源不存在"),
    METHOD_NOT_ALLOWED(405, "请求方法不允许"),
    CONFLICT(409, "数据冲突"),
    PRECONDITION_FAILED(412, "前提条件失败"),
    UNPROCESSABLE_ENTITY(422, "请求参数格式正确，但语义错误"),
    TOO_MANY_REQUESTS(429, "请求频率过高"),
    
    // 服务端错误状态码 5xx
    ERROR(500, "服务器内部错误"),
    SERVICE_UNAVAILABLE(503, "服务不可用"),
    GATEWAY_TIMEOUT(504, "网关超时"),
    
    // 业务错误状态码 1xxx
    PARAM_ERROR(1000, "参数校验失败"),
    USER_NOT_EXIST(1001, "用户不存在"),
    USERNAME_PASSWORD_ERROR(1002, "用户名或密码错误"),
    USER_DISABLED(1003, "账户已被禁用"),
    USER_EXIST(1004, "用户已存在"),
    TOKEN_EXPIRED(1005, "Token已过期"),
    TOKEN_INVALID(1006, "Token无效"),
    UPLOAD_FAIL(1007, "文件上传失败"),
    
    // 业务错误状态码 2xxx（用户管理）
    USER_OPERATION_ERROR(2001, "用户操作失败"),
    
    // 业务错误状态码 3xxx（任务管理）
    TASK_NOT_EXIST(3001, "任务不存在"),
    TASK_OPERATION_ERROR(3002, "任务操作失败"),
    
    // 业务错误状态码 4xxx（位置管理）
    LOCATION_NOT_EXIST(4001, "位置不存在"),
    LOCATION_OPERATION_ERROR(4002, "位置操作失败");
    
    private final Integer code;
    private final String message;
    
    ResultCode(Integer code, String message) {
        this.code = code;
        this.message = message;
    }
} 